#!  /usr/bin/env python
#ecoding=utf-8
import time, sched,traceback
from ..dao.template_url import TemplateUrlDao
from ..dao.template_url_cache import TemplateUrlCacheDao
from ..dao.template_url_queue import TemplateUrlQueueDao

class TemplateUrl2CacheSchedule():
    @staticmethod
    def execute(schedule, sch_times):
        try:
            templateUrls=TemplateUrlDao.get_template_urls();
            print('定时任务,从数据库中获取：'+str(len(templateUrls))+'个java解析异常模板')
            for templateUrl in templateUrls:
                #状态更改，正在请求
                templateUrl['status']=1
                TemplateUrlDao.status_update_one2(templateUrl)
                if not TemplateUrlQueueDao.exist(templateUrl):
                    TemplateUrlQueueDao.lpush(templateUrl)
            print("Redis TemplateUrlCache size:"+str(len(TemplateUrlCacheDao.hkeys())))
        except Exception as e:
            print('TemplateUrl2CacheSchedule 定时任务发生异常：')
            traceback.print_exc()
        # 安排inc秒后再次运行自己，即周期运行
        schedule.enter(sch_times, 0, TemplateUrl2CacheSchedule.execute, (schedule, sch_times))

    @staticmethod
    def start(sche_times):
        # 第一个参数确定任务的时间，返回从某个特定的时间到现在经历的秒数
        # 第二个参数以某种人为的方式衡量时间
        schedule = sched.scheduler(time.time, time.sleep)
        # 安排sche_times秒后再次运行自己，即周期运行
        schedule.enter(0, 0, TemplateUrl2CacheSchedule.execute, (schedule,sche_times))
        # 持续运行，直到计划时间队列变成空为止
        schedule.run()
